#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;


//template <class T>
//void Swap(T& a, T& b)
//{
//	T c = a;
//	a = b;
//	b = c;
//}
//
//int main()
//{
//	class  P
//	{
//	public:
//		/*void Swap(int& a, int& b)
//		{
//			int c = a;
//			a = b;
//			b = c;
//		}
//		void Swap(char& a, char& b)
//		{
//			char c = a;
//			a = b;
//			b = c;
//		}
//		void Swap(double& a, double& b)
//		{
//			double c = a;
//			a = b;
//			b = c;
//		}*/
//	
//	private:
//
//	};
//	
//
//
//
//	return 0;
//}
//
//template <class T>
//void Swap(T& a, T& b)
//{
//	T c = a;
//	a = b;
//	b = c;
//}
//
//
//int main()
//{
//	int a,b;
//	a = 1; b = 2;
//
//
//	double c, d;
//	c = 0.0; d = 1.2;
//	Swap(a, b);
//	Swap(c, d);
//	cout << a << "  " << b << endl;
//	cout << c << "  " << d << endl;
//
//	return 0;
//}

//template <class T>
//void Swap(T& a, T& b)
//{
//	T c = a;
//	a = b;
//	b = c;
//}
//
//template <class M,class F>
//void Swap(M& a, F& b)
//{
//	M c = a;
//	a = b;
//	b = c;
//}
//
//
//int main()
//{
//	int a, b;
//	a = 1; b = 2;
//
//
//	double c, d;
//	c = 0.0; d = 1.2;
//	Swap(a, c);
//	Swap(b, d);
//	cout << a << "  " << b << endl;
//	cout << c << "  " << d << endl;
//
//	return 0;
//}

//
//template <class T>
//void Swap(T& a, T& b)
//{
//	T c = a;
//	a = b;
//	b = c;
//}
//
//template <class M, class F>
//void Swap(M& a, F& b)
//{
//	M c = a;
//	a = b;
//	b = c;
//}
//
//
//int main()
//{
//	int a, b;
//	a = 1; b = 2;
//
//
//	double c, d;
//	c = 0.0; d = 1.2;
//	Swap(c, a);
//	Swap(d, b);
//	cout << a << "  " << b << endl;
//	cout << c << "  " << d << endl;
//
//	return 0;
//}


template <class T>

T Add(const T& a,const T& b)
{
	return a + b;
}

int main()
{
	int a, b;
	a = 1; 
	b = 2;
	double c, d;
	c = 1.5; 
	d = 1.2;
	Add(a, b);
	Add(c, d);
	cout << Add(a, (int)c) << endl;

	return 0;
}